#ifndef MONITOR_H_
#define MONITOR_H_
#include <pthread.h>
#define TRUE 1
#define FALSE 0

typedef struct monitor
{
	pthread_cond_t fornoOcupado;
	pthread_mutex_t mutex;
	int numPesonagemUsandoForno;
} Monitor;


int fimUsoDoForno; //Raj irá verificar se e o número desta variável é igual ao número de participantes, se sim, significa que todos já acabaram

typedef struct Personagem
{
	Monitor *m;
	int num_cliente;
	int quantidadeUsoForno; //Quantas vezes utilizou o forno
} Personagem;

void iniciaMonitor(Monitor *m);
void iniciaMediador(Monitor *m, Personagem *mediador);
void escalonarFilaUsoForno(Personagem *mediador);
void personagens(Personagem *personagem);
void criaMediador(Personagem *mediador);
void forno(Personagem *personagem);
char *qualPersonagem(int numero);
void esperar();
void querUsarForno(Personagem *personagem);
void ordenaPelaQuantidadeDeUso();
void ordenaPelaPrioridade();
int tamanhoDaFila();

#endif /* MONITOR_H_ */
